import request from "@/utils/request";

const DATASOURCE_BASE_URL = "/biz/datasource";

const DatasourceAPI = {

	/**
	 * 获取数据源分组列表
	 *
	 * @param queryParams 查询参数
	 * @returns 数据源分组结果
	 */
	getGroups(queryParams: DatasourceGroupQuery) {
	  return request<any, any>({
		url: `${DATASOURCE_BASE_URL}/group/list`,
		method: "get",
		params: queryParams,
	  });
	},
	
	/**
	 * 保存数据源分组
	 *
	 * @param data 数据源分组表单数据
	 */
	saveGroup(data: any) {
	  return request({
	    url: `${DATASOURCE_BASE_URL}/group/save`,
	    method: "post",
	    data: data,
	  });
	},
	
	/**
	 * 删除数据源分组
	 *
	 * @param ids 数据源分组ID，多个以英文逗号(,)分隔
	 */
	deleteGroupByIds(ids: string) {
	  return request({
	    url: `${DATASOURCE_BASE_URL}/group/${ids}`,
	    method: "delete",
	  });
	},
	
  /**
   * 获取数据源分页列表
   *
   * @param queryParams 查询参数
   * @returns 数据源分页结果
   */
  getPage(queryParams: DatasourcePageQuery) {
    return request<any, PageResult<DatasourcePageVO[]>>({
      url: `${DATASOURCE_BASE_URL}/pages`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 保存数据源
   *
   * @param data 数据源表单数据
   */
  save(data: any) {
    return request({
      url: `${DATASOURCE_BASE_URL}/save`,
      method: "post",
      data: data,
    });
  },
  
  /**
   * 删除数据源
   *
   * @param ids 数据源ID，多个以英文逗号(,)分隔
   */
  deleteByIds(ids: string) {
    return request({
      url: `${DATASOURCE_BASE_URL}/${ids}`,
      method: "delete",
    });
  },
  
  /**
   * 下拉框
   */
  options(queryParams: any) {
    return request<any, any>({
      url: `${DATASOURCE_BASE_URL}/options`,
      method: "get",
      params: queryParams,
    });
  },
  
  
  /**
   * 校验
   */
  test(id: string) {
    return request({
      url: `${DATASOURCE_BASE_URL}/test/${id}`,
      method: "post",
    });
  },
  
  /**
   * 启动
   */
  start(id: string) {
    return request({
      url: `${DATASOURCE_BASE_URL}/start/${id}`,
      method: "post",
    });
  },
  
  /**
   * 停止
   */
  stop(id: string) {
    return request({
      url: `${DATASOURCE_BASE_URL}/stop/${id}`,
      method: "post",
    });
  },
  
  /**
   * 保存数据源
   *
   * @param data 数据源表单数据
   */
  execSql(data: any) {
    return request({
      url: `${DATASOURCE_BASE_URL}/exec/sql`,
      method: "post",
      data: data,
    });
  },
  
  getFields(data: any) {
    return request({
      url: `${DATASOURCE_BASE_URL}/sql/fields`,
      method: "post",
      data: data,
    });
  },
  
};

export default DatasourceAPI;

/**
 * 数据源分组查询参数
 */
export interface DatasourceGroupQuery{
  /**
   * 关键字(数据源分组名称)
   */
  keywords?: string;
}

/**
 * 数据源查询参数
 */
export interface DatasourcePageQuery extends PageQuery {
  /**
   * 关键字(数据源名称/标识)
   */
  keywords?: string;
}

export interface DatasourcePageVO {
  /**
   * 数据源ID
   */
  id: string;
  /**
   * 数据源名称
   */
  name: string;
  /**
   * 数据源编码
   */
  code: string;
  /**
   * 数据源类型
   */
  type: string;
  
  /**
   * 数据源配置
   */
  config: string;
  /**
   * 数据源创建时间
   */
  createTime: Date;
  /**
   * 数据源创建时间
   */
  updateTime: Date;
}